package com.zzw.service;

import com.zzw.bean.Permissions;

import java.util.List;
import java.util.Map;

/**
 * 权限服务接口
 * 用于处理权限相关业务
 * @author 赵志伟
 * @version 1.0
 */
public interface PermissionsService {

    /**
     * 查询所有权限
     * @return 权限列表
     */
    List<Permissions> selectAll();

    /**
     * 查询所有权限，并标记指定用户拥有的权限
     * @param userId 用户ID
     * @return 权限列表，带有checked标记
     */
    List<Permissions> selectAll(Integer userId);

    /**
     * 根据角色ID查询权限
     * @param roleId 角色ID
     * @return 权限列表
     */
    List<Permissions> selectByRoleId(Integer roleId);

    /**
     * 添加权限
     * @param permission 权限对象
     * @return 是否成功
     */
    boolean insert(Permissions permission);

    /**
     * 更新权限
     * @param permission 权限对象
     * @return 是否成功
     */
    boolean update(Permissions permission);

    /**
     * 删除权限
     * @param id 权限ID
     * @return 是否成功
     */
    boolean delete(Integer id);

    /**
     * 保存角色权限关系
     * @param roleId 角色ID
     * @param permissionIds 权限ID列表
     * @return 是否成功
     */
    boolean saveRolePermissions(Integer roleId, List<Integer> permissionIds);

    /**
     * 构建权限树
     * 将权限按照模块组织成树形结构
     * @return 树形结构的权限列表
     */
    List<Map<String, Object>> buildPermissionsTree();
} 